import java.util.*;

/**
 * @author VernHe
 * @date 2021年05月12日 13:36
 */
public class Solution_049 {
    public static void main(String[] args) {
        System.out.println(new Solution_049().groupAnagrams(new String[]{"eat", "tea", "tan", "ate", "nat", "bat"}));
    }

    public List<List<String>> groupAnagrams(String[] strs) {
        // 返回结果
        List<List<String>> res = new ArrayList<>();

        // 参数判断
        if (Objects.isNull(strs) || strs.length == 0) {
            return res;
        }

        // HashMap
        Map<String, ArrayList<String>> map = new HashMap<>();

        for (String str : strs) {
            // 排序
            char[] chars = str.toCharArray();
            Arrays.sort(chars);
            String newStr = new String(chars);
            // 如果存在就加入，如果不存在就创建
            if (map.containsKey(newStr)) {
                map.get(newStr).add(str);
            } else {
                ArrayList<String> newArry = new ArrayList<>();
                newArry.add(str);
                map.put(newStr,newArry);

            }
        }
        Iterator<String> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            res.add(map.get(iterator.next()));
        }
        return res;
    }
}
